OSINT: canonical 0x0700 ClassView card + FieldMask ViewFilter + Epstein-broker power#70
Conversation
…4-level power gradient I own classid 0x0700 and its ClassView — so define it. The card that was returning `&[]` from OGAR now exists: - osint_classview.rs: OsintClassView impls lance_graph_contract::ClassView for 0x0700 with the 12-field card (bit i = ValueTenant position i), predicate_iri carrying the reasoning role (need/offer/intent/impact/person/state/identity/ relation). bit 11 = McClelland motive. Labels live in the ClassView (above the SoA), values in the entry — the Quartett card. - GET /api/osint/card?mask=<bits> — projects the card through a FieldMask (the Redmine ERB ViewFilter, server-side); omitted = FULL. render_rows(0x0700, mask) now returns the surviving (label, predicate) rows. Two unit tests cover the 12-field order + the mask filter. - Canonical home is OGAR (ogar-vocab osint ObjectView); this owner-authored q2-local impl works until mirrored upstream (same pattern as mock_driver.rs). Power gradient (Freud stages, Rheinberg's Potsdam lectures; McClelland nPow base) now has ALL FOUR levels reachable — powerOfAiro previously skipped P2: P1 oral 'I consume from others to myself' → AISubject P2 anal 'I control myself' → AIOperator (was missing) P3 phallic 'I control others' → AIDeployer P4 genital 'I empower others/stakeholders to control'→ AIDeveloper/Provider/Supplier Next: askama HTML template over render_rows + palette emits the FieldMask (moves the field render server-side → kills the vis-network repaint freeze).
…ph position The power model exists to explain the desire to be in power circles (Epstein the archetype): control others / get something / fill a need / be a platform for backdoor networking. The last — 'empower others/stakeholders to control others' (P4) — is the broker, and his power is NOT an AIRO actor role: it's GRAPH POSITION. powerOfAiro alone read him as P0. Add powerOfActor for Person(2)/Stakeholder(1) nodes, from graph structure over the rendered entity edges: - P4 backdoor platform = Burt structural-hole brokerage (degree × openness): high degree bridging neighbours who don't know each other — the connective tissue between otherwise-separate power circles. - P3 controls others = out-edge dominance. - P1 consumed from = in-edge dominance. - else affiliation/peripheral. powerOf(i) now combines: an AIRO role wins (AI-system actor); else a social actor reads from position. The divergence readout lists the top P4 brokers first — surfacing the backdoor-networker the model was built to explain. Brokerage is cached + the O(d²) pair scan is capped at 24 neighbours.
The Redmine ERB ViewFilter, rendered server-side in the codebase's own Html<String> idiom (no template engine exists in the workspace; adding askama blind on edition-2024 would risk the whole binary). render_rows is template- agnostic, so this is a drop-in swap for an askama template once a version is pinned — the projection (mask → rows) is identical either way. GET /api/osint/card.html?mask=<bits> renders the 0x0700 card as an HTML table: role (from the predicate prefix) · field · predicate, FieldMask-filtered.
|
Warning Review limit reached
Next review available in: 30 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughUpdates OsintGraph.tsx's dual-use POWER gradient logic with a new structural-hole brokerage metric for non-AI actor power inference and adds a broker summary section to the divergence readout. Adds a new Rust osint_classview module defining an OSINT ClassView with JSON/HTML card endpoints wired into the main router. ChangesDual-use POWER Model and Divergence UI
OSINT ClassView API
Estimated code review effort: 3 (Moderate) | ~30 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant AxumRouter
participant osint_classview
participant OsintClassView
Client->>AxumRouter: GET /api/osint/card?mask=...
AxumRouter->>osint_classview: osint_card_handler(CardQuery)
osint_classview->>OsintClassView: render fields with FieldMask
OsintClassView-->>osint_classview: field rows
osint_classview-->>Client: JSON {classid, mask, field_count, rows}
Client->>AxumRouter: GET /api/osint/card.html
AxumRouter->>osint_classview: osint_card_html_handler(CardQuery)
osint_classview->>OsintClassView: render fields with FieldMask
OsintClassView-->>osint_classview: field rows
osint_classview-->>Client: HTML table
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
(b) Add askama 0.12 (core, render-to-String — keeps the Html<String> axum
idiom, no askama_axum↔axum coupling; matches woa-rs's pin). The card.html
handler now renders through a compile-time-checked askama template
(templates/osint_card.html): the FieldMask carves the rows in Rust, the
template is a dumb {% for %} loop with zero per-field conditionals — the
"XSLT over the projection" pattern from OGAR's CLASSVIEW-FIELDVIEW-ASKAMA-
BITMASK doctrine. Default HTML escaping (XSS-safe).
Align the ClassView to the V3 SoA bake (data/osint-v3/) and the OGAR
mirror (ogar-vocab osint_system/osint_person), so bake ↔ reasoning ↔ OGAR
canon agree. 07xx is the operator-ratified canonical OSINT domain; the low
u16 is the frozen concept, the APP_PREFIX (0x1000, V3 format signal) is the
render half. Two concepts, matching the two GUIDs of a baked node:
- OSINT_SYSTEM_CLASS 0x0700 — 12 AIRO/VAIR dims in GUID1 6×(8:8) tier order
(currentStatus, type, militaryUse, civicUse, MLTask, MLType, purpose,
capacity, output, impact, stakeholder, airo:type). predicate_iri carries
the reasoning role (need/offer/intent/causality/person/…).
- OSINT_PERSON_CLASS 0x0701 — 5 McClelland/Rubicon dims from GUID2 (stage,
need, receptor, rubicon, motive): the Epstein-archetype motive lens.
/api/osint/card[.html] now take an optional ?class=<id> (defaults to the
system card). Unit tests cover both cards + the askama render path.
Note: cockpit-server (deno_core fork + lance-graph + ndarray tree) is too
heavy to compile in-session; Railway is the build check.
Co-Authored-By: Claude <noreply@anthropic.com>
What
Follow-up to the merged #69 (which is now in
main). Three commits, cherry-picked onto currentmain:0x0700OSINT ClassView — the AIRO/AIwar card the substrate was missing.powerOfActor— catch the backdoor-networker (Epstein) archetype via graph position, not the AIRO enum./api/osint/card.html.Changes
crates/cockpit-server/src/osint_classview.rs(new) —OsintClassViewimplslance_graph_contract::ClassViewfor classid0x0700with the 12-field card (biti= ValueTenant positioni).predicate_iricarries the reasoning role (need/offer/intent/causality/person/state/identity/relation), so the Demand ⊥ Causality axes and the Person×Situation split are read from the schema, not hard-coded. Bit 11 = McClellandmotive. Two endpoints:GET /api/osint/card?mask=<bits>→ JSONrender_rows(0x0700, mask).GET /api/osint/card.html?mask=<bits>→ the same projection as HTML (the ViewFilter, server-side, in the codebase'sHtml<String>idiom —render_rowsis template-agnostic, so an askama template is a drop-in swap later).Unit tests cover the 12-field order + the mask filter. This is owner-authored q2-local (same pattern as
mock_driver.rs); canonical home is OGAR'sosintObjectView, to be mirrored upstream.cockpit/src/OsintGraph.tsxpowerOfAiropreviously skipped P2 (went 1→3→4). Now all four reachable: P1 Subject (consume) · P2 Operator (control self) · P3 Deployer (control others) · P4 Developer/Provider/Supplier (empower others). Freud stages / Rheinberg's Potsdam lectures on McClelland's nPow base.powerOfActor— for Person/Stakeholder nodes, power reads from graph position: Burt structural-hole brokerage (degree × neighbour-openness) = the P4 backdoor platform bridging separate power circles. The Epstein archetype has no AIRO role, sopowerOfAiroscored him P0;powerOfActorcatches him. The◆ dual-usereadout now lists the top P4 brokers first.crates/cockpit-server/src/main.rs— register the two card routes.Test on Railway
curl /api/osint/card.html?mask=520→ the card with only bits 3+9 (MLTask+impact); omitmask→ all 12 fields. This is the FieldMask ViewFilter, server-rendered.◆ dual-usein the graph → the P4 backdoor platforms head the readout.Notes
cargo/npm-verify locally (network-gated); structurally balanced, mirrors existing patterns — Railway is the verification.askama 0.12+askama_axum 0.4) is a clean swap forcard.html; q2 is edition 2024 so it wants a compat check first — theHtml<String>render ships the ViewFilter now regardless.🤖 Generated with Claude Code
Generated by Claude Code
Summary by CodeRabbit
New Features
Bug Fixes